水無瀬の部屋 > Programming > sample > tools > header > tooldbg.h |
---|
1: //*********************************************************
2: // プロジェクト: TOOLS
3: // ファイル名: tooldbg.h
4: //*********************************************************
5: #ifndef TOOL_DEBUG_HEAD_INCLUDED // 多重インクルードの防止
6: #define TOOL_DEBUG_HEAD_INCLUDED
7:
8:
9: //*********************************************************
10: // コンパイル環境の指定
11: //*********************************************************
12: #ifndef PRIVATE_TOOLS_HEAD_INCLUDED // 冗長ガード
13: #include <header/_tools.h>
14: #ifndef PRIVATE_TOOLS_HEAD_INCLUDED // ガード名の検査
15: #error "? PRIVATE_TOOLS_HEAD_INCLUDED"
16: #endif // #ifndef PRIVATE_TOOLS_HEAD_INCLUDED
17: #endif // #ifndef PRIVATE_TOOLS_HEAD_INCLUDED
18:
19:
20: //*********************************************************
21: // デバッグ専用ヘッダ の インクルード
22: //*********************************************************
23: #define IN_DEBUG_HEAD // デバッグ専用ヘッダ の インクルード
24: #ifdef _DEBUG // デバッグ時のみ
25: #include <header/dbgalloc.h> // デバッグ時のみ
26: #include <header/dbgasert.h> // デバッグ時のみ
27: #endif // #ifdef _DEBUG
28: #include <header/dbgtrace.h> //
29: #undef IN_DEBUG_HEAD
30:
31:
32: //*********************************************************
33: // マクロ の 定義
34: //*********************************************************
35: // nop() の定義
36: #define nop()
37:
38:
39: // ErrExit(msg) の定義
40: //#define ErrExit(msg) exit( EXIT_FAILURE )
41:
42:
43: // DESTROY_BUFFER( buf, bufsize ) の定義
44: //
45: // バッファを破壊する
46: // buf と bufsize が確認できる
47: //
48: #ifdef _DEBUG // デバッグ版
49: #define DESTROY_BUFFER( buf, bufsize ) (memset( (buf), 0xCA, (bufsize) ))
50: #else // リリ−ス版
51: #define DESTROY_BUFFER( buf, bufsize )
52: #endif // #ifdef _DEBUG
53:
54:
55: // DESTROY_TEXT_BUFFER( buf, bufcount ) の定義
56: //
57: // 文字列用バッファを破壊する
58: // buf と bufcount が確認できる
59: //
60: #ifdef _DEBUG // デバッグ版
61: #define DESTROY_TEXT_BUFFER( buf, bufcount ) (memset( (buf), 0xCA, (bufcount) * sizeof( *(buf) ) ))
62: #else // リリ−ス版
63: #define DESTROY_TEXT_BUFFER( buf, bufcount )
64: #endif // #ifdef _DEBUG
65:
66:
67: // DBG_MSGBOX( wnd, title, message ) の定義
68: //
69: // デバッグ時にのみ表示されるメッセージボックス
70: //
71: #ifdef _DEBUG // デバッグ版
72: #define DBG_MSGBOX( wnd, title, message ) ((void)MessageBox( wnd, message, title, MB_OK ))
73: #else // リリ−ス版
74: #define DBG_MSGBOX( wnd, title, message )
75: #endif // #ifdef _DEBUG
76:
77:
78: // UNUSEPARAM(param) の定義
79: // デバッグ : UNUSEPARAM( param ) => param
80: // リリース : UNUSEPARAM( param ) =>
81: #ifndef _DEBUG
82: #define _unuse( param ) // リリ−ス版
83: #define UNUSEPARAM( param ) // リリ−ス版
84: #else // #ifndef _DEBUG
85: #define _unuse( param ) param // デバッグ版
86: #define UNUSEPARAM( param ) param // デバッグ版
87: #endif // #ifndef _DEBUG
88:
89:
90: //
91: #ifdef _DEBUG // デバッグ版
92: #define DEFINE_TESTPROC( p ) static void p(void)
93: #else // リリ−ス版
94: #define DEFINE_TESTPROC( p )
95: #endif // #ifdef _DEBUG
96:
97: //
98: #ifdef _DEBUG // デバッグ版
99: #define DECLARE_TESTPROC( p ) static void p(void);static void call_once_##p(const char*f,int l){static bool b=true;if(b){b=false;BACKGROUND_MESSAGE("%s(%d) : => %s \r\n",f,l,#p);p();BACKGROUND_MESSAGE("%s(%d) : <= %s \r\n",f,l,#p);}}
100: #else // リリ−ス版
101: #define DECLARE_TESTPROC( p )
102: #endif // #ifdef _DEBUG
103:
104: //
105: #ifdef _DEBUG // デバッグ版
106: #define CALLONCE_TESTPROC( p ) call_once_##p( __FILE__, __LINE__ )
107: #else // リリ−ス版
108: #define CALLONCE_TESTPROC( p )
109: #endif // #ifdef _DEBUG
110:
111:
112: // VALID_TEST(exp) の定義
113: //
114: // デバッグ用の関数 IsValid...() で(のみ)使う。
115: // あまり良いコードではないので多用しないこと。
116: //
117: // 式 exp が 偽 になると関数の返値を false として関数を終了する。
118: // 失敗した検査を DBG_TRACE へ出力する。
119: //
120: // 使用例:
121: //
122: // //*********************************************************
123: // // IsValidFontHandle
124: // // ハンドル hFont がフォントとして有効であれば 真 を返す
125: // //*********************************************************
126: // bool IsValidFontHandle( HFONT hFont )
127: // {
128: // VALID_TEST( hFont );
129: // VALID_TEST( OBJ_FONT == GetObjectType( hFont ) );
130: // VALID_TEST( sizeof(LOGFONT) == GetObject( hFont, sizeof(LOGFONT), null ) );
131: //
132: // return true;
133: // }//IsValidFontHandle
134: //
135: #define VALID_TEST( exp ) {if ( !(exp) ){ BACKGROUND_MESSAGE( "%s(%d) : %s \r\n", __FILE__, __LINE__, #exp ); return false; }}
136:
137:
138: //---------------------------------------------------------
139: // header/dbgtrace.h
140: //---------------------------------------------------------
141: // ERROR_REPORT(...) の定義
142: // リリース版でも削除されないことを除けば DBG_TRACE に同じ
143: #define ERROR_REPORT BACKGROUND_MESSAGE
144:
145: // BACKGROUND_MESSAGE(...) の定義
146: // リリース版でも削除されないことを除けば DBG_TRACE に同じ
147: #define BACKGROUND_MESSAGE (get_trace_proc())
148:
149: // DBG_TRACE(...) の定義
150: // デバッグ : DBG_TRACE( msg ) => tracef( msg )
151: // リリース : DBG_TRACE( msg ) => true ? ((void)0) : (void)( msg )
152: #ifndef _DEBUG
153: #define DBG_TRACE true ? ((void)0) : (void) // リリ−ス版
154: #else // #ifndef _DEBUG
155: #define DBG_TRACE (get_trace_proc()) // デバッグ版
156: #endif // #ifndef _DEBUG
157:
158: // SET_TRACE( proc ) の定義
159: // デバッグ : SET_TRACE( proc ) => set_trace_proc( proc )
160: // リリース : SET_TRACE( proc ) =>
161: #ifndef _DEBUG
162: #define SET_TRACE( proc ) // リリ−ス版
163: #else // #ifndef _DEBUG
164: #define SET_TRACE( proc ) set_trace_proc( (proc) ) // デバッグ版
165: #endif // #ifndef _DEBUG
166:
167:
168: //---------------------------------------------------------
169: // header/dbgasert.h
170: //---------------------------------------------------------
171: // ASSERT( exp ) の定義
172: #ifndef _DEBUG
173: #define ASSERT( exp ) // リリ−ス
174: #else // #ifndef _DEBUG
175: #define ASSERT( exp ) assert_jp( exp ) // デバッグ
176: #endif // #ifndef _DEBUG
177:
178:
179: // VERIFY( exp ) の定義
180: #ifndef _DEBUG
181: #define VERIFY( exp ) ((void)( exp )) // リリ−ス
182: #else // #ifndef _DEBUG
183: #define VERIFY( exp ) assert_jp( 0 != (exp) ) // デバッグ
184: #endif // #ifndef _DEBUG
185:
186:
187: // UNREACHCODE( e ) の定義
188: #ifndef _DEBUG
189: #define UNREACHCODE( msg ) // リリ−ス
190: #else // #ifndef _DEBUG
191: #define UNREACHCODE( msg ) (assert_jp( (msg, 0) )) // デバッグ
192: #endif // #ifndef _DEBUG
193:
194:
195: //---------------------------------------------------------
196: // header/dbgalloc.h
197: //---------------------------------------------------------
198: // malloc( size ) の定義
199: #ifdef _DEBUG
200: #define malloc( size ) _my_malloc( (size), __FILE__, __LINE__ ) // デバッグ
201: #endif // #ifdef _DEBUG
202:
203:
204: // free( p ) の定義
205: #ifdef _DEBUG
206: #define free( p ) ((void)(_my_free( p, __FILE__, __LINE__ ), p = p )) // デバッグ
207: #endif // #ifdef _DEBUG
208:
209:
210: // realloc( p, size ) の定義
211: #ifdef _DEBUG
212: #define realloc( p, size ) _my_realloc( (p), (size), __FILE__, __LINE__ ) // デバッグ
213: #endif // #ifdef _DEBUG
214:
215:
216: // calloc( num, size ) の定義
217: #ifdef _DEBUG
218: #define calloc( num, size ) malloc( (num) * (size) ) // デバッグ
219: #endif // #ifdef _DEBUG
220:
221:
222: // strdup( str ) の定義
223: #ifdef _DEBUG
224: #define strdup( str ) StrAlloc( str ) // デバッグ
225: #else
226: #define strdup( str ) _strdup( str ) // リリース
227: #endif // #ifdef _DEBUG
228:
229:
230: // DBG_LOCK_ALLOCED_MEMORY( p, name ) の定義
231: // DBG_UNLOCK_ALLOCED_MEMORY( p, name ) の定義
232: //
233: // 確保領域 p を名前 name でロックして開放できないようにします。
234: //
235: //
236: #ifdef _DEBUG
237: #define DBG_LOCK_ALLOCED_MEMORY( p, name ) _dbg_lock_ptr( (p), (name), __FILE__, __LINE__ )
238: #define DBG_UNLOCK_ALLOCED_MEMORY( p, name ) _dbg_unlock_ptr( (p), (name), __FILE__, __LINE__ )
239: #else
240: #define DBG_LOCK_ALLOCED_MEMORY( p, name )
241: #define DBG_UNLOCK_ALLOCED_MEMORY( p, name )
242: #endif // #ifdef _DEBUG
243:
244:
245: #endif // #ifndef TOOL_DEBUG_HEAD_INCLUDED
246:
247:
248: //** end **
参照:
argcargv.cpp, lnkctrl.cpp, picker.cpp, browsbox.cpp, dyndlg.cpp, curfile.cpp, icofile.cpp, toolmci.cpp, binary.cpp, crc16.cpp, crc32.cpp, md4.cpp, md5.cpp, pathargv.cpp, sha1.cpp, sha256.cpp, sha512.cpp, toolnext.cpp, toolold.cpp, snprintf.cpp, susie.cpp, toolbase.cpp, toolctrl.cpp, tooldbg.cpp, toolptrc.cpp, tools.h, toolsys.cpp, toolsysx.cpp, toolwind.cpp, workthrd.cpp
水無瀬の部屋 > sample > tools > header > tooldbg.h |
---|
このページは cpp2web が出力しました。
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
http://katsura-kotonoha.sakura.ne.jp/prog/code/tools/header/tooldbg_h.shtml